home *** CD-ROM | disk | FTP | other *** search
- Program check;
- uses dos,crt;
-
- const
- {カラーテーブル設定}
- kuro=0;Ao=1;Midori=2;Mizuiro=3;Aka=4;Kiiro=6;Murasaki=5;Shiro=7;
- CrChar ='';{ ^M;} (* 改行文字 ここでは使っていない*)
- MaxWord=80;
-
- {$I check.lib}
-
- var
- jisyo1,jisyo2,jisyo3,
- ws,STringLine,tango,tango_file2,filename,lineNo:string;
- flag,i,j,KURIKAESHI,linecounter:integer;
- hensyufile:text;
- ch:char;
- dammyflag:boolean;
- dammy:string[1];
- bword,word:array[1..MaxWord] of string;{一文中の単語数の許容範囲}
-
- begin
- {===初期の表示=====完成=====================================}
- HeapError := @HeapFunc;
- title;
- line;
- {===辞書ファイルの初期化========完成================================}
- config(jisyo1,jisyo2,jisyo3); {辞書ファイルの設定jisyo1,jisyo2,jisyo3は辞書}
- {1:無かったら新規作成 2:無かったら終了 3:あっても新規作成}
- CheckFileExist(2,jisyo1);
- CheckFileExist(1,jisyo2);
- CheckFileExist(3,jisyo3);
- {===編集ファイルの選択========完成================================}
- linecounter:=0;j:=-1;
- case paramcount of
- 0:begin
- repeat
- write('編集対象のファイル名を与えて下さい>');
- readln(filename);
- openfile(filename,hensyufile,flag);
- until flag=0;
- end;
- 1:begin
- filename:=paramstr(1);
- openfile(filename,hensyufile,flag);
- if flag=1 then
- begin
- textcolor(aka);
- writeln(^G+'コマンドエラー');
- textcolor(shiro);
- writeln('使い方');
- writeln('CHECK [ファイル名:String] [行番号:integer]');
- halt(1);
- end;
- end;
- 2:begin
- filename:=paramstr(1);
- openfile(filename,hensyufile,flag);
- if flag=1 then
- begin
- textcolor(aka);
- writeln(^G+'コマンドエラー');
- textcolor(shiro);
- writeln('使い方');
- writeln('CHECK [ファイル名:String] [行番号:integer]');
- halt(1);
- end
- else
- begin
- lineNo:=paramstr(2);
- val(lineNo,j,flag);
- if flag=1 then halt(1);
- end;
- end;
- end;{end of case}
-
-
- {===一文を文書ファイルより切り取り単語に分解===完成====================}
- dammyflag:=false;
- while not eof(hensyufile) do
- begin
- line;
- if j>linecounter then
- begin
- if (not(paramstr(1)='') and (flag=0)) then
- begin
- repeat
- readln(hensyufile,Ws[i]);linecounter:=linecounter+1;
- until linecounter=j;
- end;
- end;
- repeat
- readln(hensyufile,STRINGline);linecounter:=linecounter+1;
- until ( eoln(hensyufile) or eof(hensyufile) or (stringline<>''));
- stringline:=stringline+' ';
- writeln(stringline);
-
-
- textcolor(kiiro);
- writeln('この行は ',filename,' の ',linecounter,' 行目です。');
- textcolor(shiro);
-
- { 単語に分解するルーチン 完成}
- i:=0;
- repeat
- Ws:='';
- repeat
- dammy:=copy(StringLine,1,1);
- if not ((dammy = '!')or(dammy = '?')or(dammy = ' ')or
- (dammy = '.')or(dammy = ',')or(dammy = #13)or
- (dammy = #9 )or(dammy = #10)or(dammy = ':'))
- then Ws:=Ws+dammy;
- delete(StringLine,1,1);
- until ((dammy = '!')or(dammy = '?')or(dammy = ' ')or
- (dammy = '.')or(dammy = ',')or(dammy = #13)or
- (dammy = #9 )or(dammy = #10)or(dammy = ':'));
-
- if not ((Ws = '')or(Ws = '!')or(Ws = '?')or(Ws = ' ')or
- (Ws = '.')or(Ws = ',')or(Ws = #13)or
- (Ws = #9 )or(Ws = #10)or(Ws = ':')) then
- begin
- i:=i+1;
- Word[i]:=Ws;
- end;
- until ((dammy = #13)or(dammy = #10)or(STringLine=#13)
- or(STringLine=#10)or(STringLine=''));
- { 単語に分解するルーチン <-- ここで終わり}
-
- {====辞書を検索し結果を表示するルーチン=================================}
- for KURIKAESHI:=1 to i do
- begin
- if ((word[KURIKAESHI]<>'') or (word[KURIKAESHI]='' ))
- then bword[KURIKAESHI]:=word[KURIKAESHI];
- SearchWordfromDIC(jisyo2,bword[KURIKAESHI],tango);
- tango_file2:=tango;
- if tango='' then SearchWordfromDIC(jisyo1,bword[KURIKAESHI],tango);
- {↓辞書2になくて辞書1にあった場合に辞書2に書き込む}
- if ((tango_file2='') and (tango<>'')) then
- DataPlus2File(jisyo2,bword[KURIKAESHI]);
- if tango=''
- then
- begin
- textcolor(kiiro);
- write(bword[KURIKAESHI]);
- textcolor(shiro);
- writeln(':見当たりません');
- textcolor(aka);
- writeln(^G+'辞書3に保存しておきますか [Y/N]');
- textcolor(shiro);
- repeat
- ch:=readkey;
- until ch in ['y','Y','n','N'];
- if ch in ['y','Y'] then
- begin
- {↓辞書2と辞書1のどちらにも無い場合のみ辞書3に書き込む}
- DataPlus2File(jisyo3,bword[KURIKAESHI]);
- writeln('保存しました');
- end;
- end
- else
- begin
- textcolor(mizuiro);
- write(bword[KURIKAESHI]);
- textcolor(shiro);
- writeln(':既存');
- end;
- end;{of for}
-
- end;{ チェックするファイルの終わりを確認する
- while not eof(hensyufile) do begin に対応する}
- {これは一番大きな繰り返しのrepeatに対応するuntil}
- close(hensyufile);
- textcolor(shiro);
- halt(0);
- end.
-